home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 1996
/
MacHack 1996.toast
/
Presentations
/
Presentations ’94
/
Timothy Knox
/
Help
/
Help Files
/
Foreign Code
/
fib
< prev
next >
Wrap
Text File
|
1994-06-24
|
4KB
|
73 lines
(thunk (info (r2) (d0 a0 r0 a1 m))
((move L (# 4) d0)
(move L (data (thunk (info (d0) (a0)) () GetABlock)) a0)
(jsr (8 a0))
(move B (# 12) (-3 a0))
(move L r2 (4 a0))
(move L (data (thunk (info (r2 lp) (m r0 r1 r2 a0 a1 d0 d1))
((move L (# 4) d0)
(move L (data (thunk (info (d0) (a0)) () GetABlock)) a0)
(jsr (8 a0))
(move B (# 17) (-3 a0))
(move L r2 (4 a0))
(move L a0 r2)
(lea (8 a0) a0)
(move L (- lp) (a0 +))
(lea (-4 lp) lp)
(move L r2 (lp +))
(move L (data {Closure:{Code 680xx for <?} Env:()}) (lp +))
(move L (8 r2) (lp +))
(move L (data 2) (lp +))
(move L (data {Closure:{Code 680xx for <?} Env:()}) a0)
(move L (4 a0) r2)
(move L (a0) a0)
(jsr (8 a0))
(move L (- lp) r2)
(cmp L r0 (data ƒ))
(beq cond-faux 1495668)
(move L (data 1) r0)
(rts)
(cond-faux 1495668)
(move L (data {Closure:{Code 680xx for +} Env:()}) (lp +))
(move L r2 (lp +))
(move L (data {Closure:((n)) Env:()}) (lp +))
(move L (data {Closure:{Code 680xx for 1-} Env:()}) (lp +))
(move L (8 r2) (lp +))
(move L (data {Closure:{Code 680xx for 1-} Env:()}) a0)
(move L (4 a0) r2)
(move L (a0) a0)
(jsr (8 a0))
(move L r0 (lp +))
(move L (data {Closure:((n)) Env:()}) a0)
(move L (4 a0) r2)
(move L (a0) a0)
(jsr (8 a0))
(move L r0 (lp +))
(move L (- lp) r2)
(move L (data {Closure:((n)) Env:()}) (lp +))
(move L (data {Closure:{Code 680xx for -} Env:()}) (lp +))
(move L (8 r2) (lp +))
(move L (data 2) (lp +))
(move L (data {Closure:{Code 680xx for -} Env:()}) a0)
(move L (4 a0) r2)
(move L (a0) a0)
(jsr (8 a0))
(move L r0 (lp +))
(move L (data {Closure:((n)) Env:()}) a0)
(move L (4 a0) r2)
(move L (a0) a0)
(jsr (8 a0))
(move L r0 (lp +))
(move L (data {Closure:{Code 680xx for +} Env:()}) a0)
(move L (4 a0) r2)
(move L (a0) a0)
(jmp (8 a0)))
((cond (<? n 2) 1 (+ (fib (1- n)) (fib (- n 2)))))))
(a0))
(move W (# 1) (10 a0))
(move L a0 r0)
(move L (data fib) a1)
(move L r0 (4 a1))
(rts))
((define (fib n) (cond (<? n 2) 1 (+ (fib (1- n)) (fib (- n 2)))))))